﻿#define TEST

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.Serialization;
using System.Net;
using System.Windows;

namespace VKontakteClient
{
    /// <summary>
    /// Класс настроек
    /// </summary>
    [Serializable]
    public class Settings
    {
        private List<string> _coreModePages;
        public List<string> CoreModePages
        {
            get
            {
                if (_coreModePages == null) _coreModePages = new List<string>();
                return _coreModePages;
            }
        }
        /// <summary>
        /// Коллекция плюшек
        /// </summary>
        private CookieCollection _cookies;

        /// <summary>
        /// Свойство-коллекция плюшек. Реализует ленивую инициализацию
        /// </summary>
        public CookieCollection Cookies
        {
            get
            {
                if (_cookies == null) _cookies = new CookieCollection();
                return _cookies;
            }
        }

        /// <summary>
        /// Свойство - человек - я
        /// </summary>
        public Human Myself
        {
            get
            {
                if (mySelf == null && myID.HasValue)
                {
                    Myself = Human.GetHuman(myID.Value);
                }
                return mySelf;
            }
            set
            {
#if TEST
                if (value!=null && !SettingsAPI.IsAllowed(value.Id))
                {
                    MessageBox.Show("Эта приватная сборка. Её могут использовать только ограниченное количество человек. Вы не в этом списке.");
                    Main.sc.Post((object o) =>
                        {
                            App.Current.MainWindow.Close();
                        }, null);
                }
#endif
                mySelf = value;
                myID = value.Id;
            }
        }

        /// <summary>
        /// Ссылка на человека-"себя"
        /// </summary>
        [field: NonSerialized]
        private Human mySelf;

        /// <summary>
        /// Сохраненный ID "себя"
        /// </summary>
        public int? myID;

        /// <summary>
        /// Логин(email)
        /// </summary>
        public string LogOnName
        {
            get;
            set;
        }

        /// <summary>
        /// Пароль
        /// </summary>
        public string Password
        {
            get;
            set;
        }

        public bool UpdateFriendsRegular { get; set; }
        public int UpdateFriendsInterval { get; set; }
    }
}
